名前ベースのバーチャルホストをIISで実現する
はじめに
この記事の主なターゲットは「Linuxは分かるけどWindowsは分からない」人向けです。
1つのWebサーバで複数のWebサイトを構成する場合、
- サーバに複数のIPアドレスを割り当てて、アクセスされたIPアドレスによってWebサイトを分ける「IPベースのバーチャルホスト」
- 1つのIPアドレスしか持たずに、アクセスされたURLによってWebサイトを分ける「名前ベースのバーチャルホスト」
の2つの方法があります。IPアドレスを明確に分けなければいけない理由が特にない場合には、名前ベースのバーチャルホストを使うことが多いかと思います。
Apacheの場合は、/etc/httpd/conf.d/の下にWebサイト毎の設定ファイルを作成し、VirtualHostディレクティブによって実現します。さて、ではWindows+IISではどう実現するのでしょうか?というのがこの記事のスタート地点であり、「超簡単でした」というのがゴール結果です。
やってみる
今回LaunchしたEC2のAMIは「Windows_Server-2012-R2_RTM-English-64Bit-Base-2014.09.10」です。
まず、IISを役割追加しただけの状態だと、以下のようにデフォルトサイトだけが存在します。
この状態でWebブラウザでEIPにアクセスすると、デフォルトWebサイトが表示されます(index.htmlを手動で作って分かりやすいようにしています)
それではWebサイトを追加してみましょう。左ペインの[サイト]を右クリックして[Webサイトの追加]をクリックします。
[Webサイトの追加]画面が表示されます。各入力値を埋めていくのですが、この際に[バインド]-[ホスト名]欄に、アクセスされるURLのホスト名を入力します。 これがApacheでの「NameVirtualHost」に相当します。最後に[OK]ボタンをクリックします。
[IISマネージャー]画面に戻ると、Webサイトが追加されています。
で、追加したWebサイトのホスト名をDNSに登録し、その名前でアクセスしてみると、ちゃんと追加したWebサイトのほうにアクセスされることが分かります。
超簡単!
まとめ
Apacheやnginxに慣れていると、いちいちGUIで設定しなければいけないIISのほうが面倒臭いと思いがちですが、GUIがきちんと用意されているというのはメリットでもあります。Webサイトの追加がGUIから簡単に出来るというのはIISの良いところでは無いでしょうか。